package com.xmtlxx.tms.domain.bo;

import com.xmtlxx.common.core.domain.BaseEntity;
import com.xmtlxx.common.core.validate.AddGroup;
import com.xmtlxx.common.core.validate.EditGroup;
import com.xmtlxx.tms.domain.vo.OrderDtlVo;
import com.xmtlxx.system.domain.SysOss;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单业务对象 t_order
 *
 * @author xmtlxx
 * @date 2022-08-15
 */

@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("订单业务对象")
public class OrderBo extends BaseEntity {

    /**
     * 订单ID
     */
    @ApiModelProperty(value = "订单ID")
    private String id;

    /**
     * 部门ID
     */
    @ApiModelProperty(value = "部门ID", required = true)
    @NotNull(message = "部门ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long deptId;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号", required = true)
    @NotBlank(message = "订单号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String orderNo;

    /**
     * 任务单ID
     */
    @ApiModelProperty(value = "任务单ID", required = true)
    @NotBlank(message = "任务单ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String taskId;

    /**
     * 出入库单ID
     */
    @ApiModelProperty(value = "出入库单ID", required = true)
    @NotBlank(message = "出入库单ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String objId;

    /**
     * 父级订单id
     */
    @ApiModelProperty(value = "父级订单id")
    private String fid;

    /**
     * 委托单号
     */
    @ApiModelProperty(value = "委托单号")
    private String entrustNo;

    /**
     * 订单序列号，最多4位
     */
    @ApiModelProperty(value = "订单序列号，最多4位")
    private Long orderSerial;

    /**
     * 来源
     */
    @ApiModelProperty(value = "来源")
    private String sourceType;

    /**
     * 订单状态
     */
    @ApiModelProperty(value = "订单状态")
    private String status;

    /**
     * 订单类型
     */
    @ApiModelProperty(value = "订单类型")
    private String type;

    /**
     * 签收时间
     */
    @ApiModelProperty(value = "签收时间")
    private Date signTime;

    /**
     * 作废时间
     */
    @ApiModelProperty(value = "作废时间")
    private Date cancelTime;

    /**
     * 配送时间
     */
    @ApiModelProperty(value = "配送时间")
    private Date deliveryTime;

    /**
     * 配送方式
     */
    @ApiModelProperty(value = "配送方式")
    private String deliveryType;

    /**
     * 送达时间
     */
    @ApiModelProperty(value = "送达时间")
    private Date arriveTime;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String memo;

    /**
     * 客户id
     */
    @ApiModelProperty(value = "客户id")
    private String clientId;

    /**
     * 客户名称
     */
    @ApiModelProperty(value = "客户名称")
    private String clientName;

    /**
     * 客户联系人
     */
    @ApiModelProperty(value = "客户联系人")
    private String clientContacts;

    /**
     * 客户联系人电话
     */
    @ApiModelProperty(value = "客户联系人电话")
    private String clientTel;

    /**
     * 寄件地址
     */
    @ApiModelProperty(value = "寄件地址")
    private String sendAddress;

    /**
     * 寄件联系人
     */
    @ApiModelProperty(value = "寄件联系人")
    private String sendContacts;

    /**
     * 寄件联系电话
     */
    @ApiModelProperty("寄件联系电话")
    private String sendTel;

    /**
     * 寄件日期
     */
    @ApiModelProperty(value = "寄件日期")
    private Date sendDate;

    /**
     * 寄件地址纬度
     */
    @ApiModelProperty(value = "寄件地址纬度")
    private String sendLat;

    /**
     * 寄件地址经度
     */
    @ApiModelProperty(value = "寄件地址经度")
    private String sendLng;

    /**
     * 寄件地址简称
     */
    @ApiModelProperty(value = "寄件地址简称")
    private String sendAddr;

    /**
     * 收件地址简称
     */
    @ApiModelProperty(value = "收件地址简称")
    private String takeAddr;

    /**
     * 收件地址
     */
    @ApiModelProperty(value = "收件地址")
    private String takeAddress;

    /**
     * 收件联系人
     */
    @ApiModelProperty(value = "收件联系人")
    private String takeContacts;

    /**
     * 收件日期
     */
    @ApiModelProperty(value = "收件日期")
    private Date takeDate;

    /**
     * 收件联系电话
     */
    @ApiModelProperty(value = "收件联系电话")
    private String takeTel;

    /**
     * 收件地址纬度
     */
    @ApiModelProperty(value = "收件地址纬度")
    private String takeLat;

    /**
     * 收件地址经度
     */
    @ApiModelProperty(value = "收件地址经度")
    private String takeLng;

    /**
     * 收件备注
     */
    @ApiModelProperty(value = "收件备注")
    private String takeMemo;

    /**
     * 调度员ID
     */
    @ApiModelProperty(value = "调度员ID")
    private Long dispatcherId;

    /**
     * 线路ID
     */
    @ApiModelProperty(value = "线路ID")
    private String lineId;

    /**
     * 线路名称
     */
    @ApiModelProperty(value = "线路名称")
    private String lineName;

    /**
     * 司机ID
     */
    @ApiModelProperty(value = "司机ID")
    private String driverId;

    /**
     * 驾驶员名称
     */
    @ApiModelProperty(value = "驾驶员名称")
    private String driverName;

    /**
     * 驾驶员手机
     */
    @ApiModelProperty(value = "驾驶员手机")
    private String driverPhone;

    /**
     * 车牌号码
     */
    @ApiModelProperty(value = "车牌号码")
    private String carNumber;

    /**
     * 车辆ID
     */
    @ApiModelProperty(value = "车辆ID")
    private String carId;

    /**
     * 删除标识
     */
    @ApiModelProperty(value = "删除标识")
    private String delFlag;

    private List<OrderDtlVo> items;
    /**
     * 取件人
     */
    private Long pickupId;
    /**
     * 派件人
     */
    private Long dispatchId;

    private List<String> statustr;

    /**
     * 体积
     */
    private BigDecimal volume;
    /**
     * 重量
     */
    private BigDecimal weight;

    private Long nums;

    private String isTrailer;

    private String isStaging;

    private Date stagingTime;

    private List<String> orderIds;

    private String scheduleId;

    /**
     * 暂存部门
     */
    private Long stagingDept;

    /**
     * 搜索条件
     */
    private String pno;
    private String pname;
    private String region;

    /**
     * 车辆外观正前图片
     */
    private List<SysOss> facadeOss;

    /**
     * 车辆外观正左图片
     */
    private List<SysOss> facadeLeftOss;

    /**
     * 车辆外观正后图片
     */
    private List<SysOss> facadeAfterOss;

    /**
     * 车辆外观正右图片
     */
    private List<SysOss> facadeRightOss;

    /**
     * 仪表盘图片
     */
    private List<SysOss> dashboardOss;

    /**
     * 车架号图片
     */
    private List<SysOss> carOss;

    /**
     * 车钥匙图片
     */
    @ApiModelProperty("车钥匙图片")
    private List<SysOss> carKeyOss;
    /**
     * 行驶证图片
     */
    @ApiModelProperty("行驶证图片")
    private List<SysOss> driveLicenOss;
    /**
     * 登记书图片
     */
    @ApiModelProperty("登记书图片")
    private List<SysOss> registerBookOss;

    /**
     * 交接现场图片
     */
    private List<SysOss> handoverOss;

    /**
     * 装车图片
     */
    private List<SysOss> loadOss;

    /**
     * 目的地图片
     */
    private List<SysOss> takeOss;

    /**
     * 卸车图片
     */
    private List<SysOss> unloadOss;

    /**
     * 瑕疵图片
     */
    private List<SysOss> flawOss;

    /**
     * 取件其他
     */
    private List<SysOss> otherOss;

    /**
     * 到达其他
     */
    private List<SysOss> otherTwoOss;

    @ApiModelProperty("是否车辆")
    private String buss;

    /**
     * 车辆流转状态
     */
    private String carStatus;

    @ApiModelProperty("承运商")
    private Long carrierDeptId;

    private Long storeDept;

    private String signeeName;
}
